package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 无人机任务对象 drone_mission
 */
public class DroneMission extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 任务ID */
    private String missionId;

    /** 任务名称 */
    @Excel(name = "任务名称")
    private String missionName;

    /** 农田面积 */
    @Excel(name = "农田面积")
    private Double fieldArea;

    /** 飞行高度 */
    @Excel(name = "飞行高度")
    private Integer flightHeight;

    /** 监测密度 */
    @Excel(name = "监测密度")
    private String monitoringDensity;

    /** 任务状态 */
    @Excel(name = "任务状态")
    private String status;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 检测目标数量 */
    @Excel(name = "检测目标数量")
    private Integer detectionCount;

    /** 主要病虫害 */
    @Excel(name = "主要病虫害")
    private String mainPest;

    /** 农田位置 */
    @Excel(name = "农田位置")
    private String fieldLocation;

    /** 飞行路径 */
    private String flightPath;

    /** 任务报告 */
    private String missionReport;

    /** 创建者 */
    @Excel(name = "创建者")
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    @Excel(name = "更新者")
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    @Excel(name = "备注")
    private String remark;

    // 省略getter和setter方法，实际代码中需要完整实现

    public String getMissionId() { return missionId; }
    public void setMissionId(String missionId) { this.missionId = missionId; }

    public String getMissionName() { return missionName; }
    public void setMissionName(String missionName) { this.missionName = missionName; }

    public Double getFieldArea() { return fieldArea; }
    public void setFieldArea(Double fieldArea) { this.fieldArea = fieldArea; }

    public Integer getFlightHeight() { return flightHeight; }
    public void setFlightHeight(Integer flightHeight) { this.flightHeight = flightHeight; }

    public String getMonitoringDensity() { return monitoringDensity; }
    public void setMonitoringDensity(String monitoringDensity) { this.monitoringDensity = monitoringDensity; }

    public String getStatus() { return status; }
    public void setStatus(String status) { this.status = status; }

    public Date getStartTime() { return startTime; }
    public void setStartTime(Date startTime) { this.startTime = startTime; }

    public Date getEndTime() { return endTime; }
    public void setEndTime(Date endTime) { this.endTime = endTime; }

    public Integer getDetectionCount() { return detectionCount; }
    public void setDetectionCount(Integer detectionCount) { this.detectionCount = detectionCount; }

    public String getMainPest() { return mainPest; }
    public void setMainPest(String mainPest) { this.mainPest = mainPest; }

    public String getFieldLocation() { return fieldLocation; }
    public void setFieldLocation(String fieldLocation) { this.fieldLocation = fieldLocation; }

    public String getFlightPath() { return flightPath; }
    public void setFlightPath(String flightPath) { this.flightPath = flightPath; }

    public String getMissionReport() { return missionReport; }
    public void setMissionReport(String missionReport) { this.missionReport = missionReport; }

    @Override
    public String getCreateBy() { return createBy; }
    @Override
    public void setCreateBy(String createBy) { this.createBy = createBy; }

    @Override
    public Date getCreateTime() { return createTime; }
    @Override
    public void setCreateTime(Date createTime) { this.createTime = createTime; }

    @Override
    public String getUpdateBy() { return updateBy; }
    @Override
    public void setUpdateBy(String updateBy) { this.updateBy = updateBy; }

    @Override
    public Date getUpdateTime() { return updateTime; }
    @Override
    public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; }

    @Override
    public String getRemark() { return remark; }
    @Override
    public void setRemark(String remark) { this.remark = remark; }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("missionId", getMissionId())
                .append("missionName", getMissionName())
                .append("fieldArea", getFieldArea())
                .append("flightHeight", getFlightHeight())
                .append("monitoringDensity", getMonitoringDensity())
                .append("status", getStatus())
                .append("startTime", getStartTime())
                .append("endTime", getEndTime())
                .append("detectionCount", getDetectionCount())
                .append("mainPest", getMainPest())
                .append("fieldLocation", getFieldLocation())
                .append("flightPath", getFlightPath())
                .append("missionReport", getMissionReport())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}
